﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SeguroSoft.Models;

namespace SeguroSoft.Tests.Fakes
{
    class FakeRepositorioRevisionTecnica:IRepositorioRevisionTecnica
    {
        List<RevisionTecnica> ListaRevisiones;
        public FakeRepositorioRevisionTecnica(List<RevisionTecnica> Revisiones) {
            ListaRevisiones = Revisiones;
        }


        public void EliminarRevision(RevisionTecnica revision)
        {
            ListaRevisiones.Remove(revision);
        }

        public IQueryable<RevisionTecnica> EncontrarRevisionPorComuna(string comuna)
        {
            return (from revision in ListaRevisiones
                    where revision.Comuna.Equals(comuna)
                    select revision).AsQueryable();
        }

        public IQueryable<RevisionTecnica> EncontrarRevisionPorPrecio(double costo, int opcion)
        {
            if (opcion == 1)
            {
                 return (from revision in ListaRevisiones
                       where int.Parse(revision.Costo.ToString()) >= costo
                       orderby int.Parse(revision.Costo.ToString())
                       select revision).AsQueryable();
            }
            else if (opcion == 2)
            {
                return (from revision in ListaRevisiones
                        where int.Parse(revision.Costo.ToString()) <= costo
                        orderby int.Parse(revision.Costo.ToString())
                        select revision).AsQueryable();
            }

            else
            {
                return (from revision in ListaRevisiones
                        where int.Parse(revision.Costo.ToString()) == costo
                        orderby int.Parse(revision.Costo.ToString())
                        select revision).AsQueryable();
            }
        }

        public IQueryable<RevisionTecnica> EncontrarRevisionPorTiempoEspera(int tiempoespera, int opcion)
        {
            if (opcion == 1)
            {
                return (from revision in ListaRevisiones
                       where int.Parse(revision.TiempoEspera.ToString()) >= tiempoespera
                       orderby int.Parse(revision.TiempoEspera.ToString())
                       select revision).AsQueryable();
            }
            else if (opcion == 2)
            {
                return (from revision in ListaRevisiones
                       where int.Parse(revision.TiempoEspera.ToString()) <= tiempoespera
                       orderby int.Parse(revision.TiempoEspera.ToString())
                       select revision).AsQueryable();
            }

            else
            {
                return (from revision in ListaRevisiones
                        where int.Parse(revision.TiempoEspera.ToString()) == tiempoespera
                        orderby int.Parse(revision.TiempoEspera.ToString())
                        select revision).AsQueryable();


            }
        }

        public IQueryable<RevisionTecnica> EncontrarRevisionPorTipo(string tipo)
        {
              return (from revision in ListaRevisiones
                   where revision.TipoRevision.Equals(tipo)
                   select revision).AsQueryable();
        }

        public IQueryable<RevisionTecnica> EncontrarTodasLasRevisiones()
        {
            return ListaRevisiones.AsQueryable();
        }

        public void Guardar()
        {
        }


        public RevisionTecnica EncontarRevisionPorId(int id)
        {
           return ListaRevisiones.SingleOrDefault(d => d.IDRevisionTecnica == id);
        }
    }
}
